///******************************************************************************* // * Copyright (c) 2008, 2009 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // ******************************************************************************/ // //package org.eclipse.jface.tests.labelProviders; // //import org.eclipse.core.runtime.AssertionFailedException; //import org.eclipse.jface.resource.JFaceResources; //import org.eclipse.jface.tests.viewers.ViewerTestCase; //import org.eclipse.jface.viewers.CellLabelProvider; //import org.eclipse.jface.viewers.ColumnPixelData; //import org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider; //import org.eclipse.jface.viewers.IColorDecorator; //import org.eclipse.jface.viewers.IDecorationContext; //import org.eclipse.jface.viewers.IFontProvider; //import org.eclipse.jface.viewers.ILabelDecorator; //import org.eclipse.jface.viewers.ILabelProviderListener; //import org.eclipse.jface.viewers.IStructuredContentProvider; //import org.eclipse.jface.viewers.LabelProviderChangedEvent; //import org.eclipse.jface.viewers.StructuredSelection; //import org.eclipse.jface.viewers.StructuredViewer; //import org.eclipse.jface.viewers.StyledString; //import org.eclipse.jface.viewers.TableLayout; //import org.eclipse.jface.viewers.TableViewer; //import org.eclipse.jface.viewers.ViewerCell; //import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; //import org.eclipse.swt.SWT; //import org.eclipse.swt.graphics.Color; //import org.eclipse.swt.graphics.Font; //import org.eclipse.swt.graphics.Image; //import org.eclipse.swt.graphics.Rectangle; //import org.eclipse.swt.graphics.TextLayout; //import org.eclipse.swt.graphics.TextStyle; //import org.eclipse.swt.layout.GridData; //import org.eclipse.swt.widgets.Composite; //import org.eclipse.swt.widgets.Display; //import org.eclipse.swt.widgets.Event; //import org.eclipse.swt.widgets.Table; //import org.eclipse.swt.widgets.TableColumn; // ///** // * Most of the setup has been taken from // * org.eclipse.jface.snippets.viewers.Snippet010OwnerDraw.java // * // * @since 3.4 // * // */ //public class DecoratingStyledCellLabelProviderTest extends ViewerTestCase { // // // static ResourceManager resourceManager = PlatformUI.getWorkbench(). // private class TestCellLabelProvider extends CellLabelProvider implements // IStyledLabelProvider, IFontProvider { // // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.viewers.CellLabelProvider#update(org.eclipse.jface.viewers.ViewerCell) // */ // public void update(ViewerCell cell) { // Object element = cell.getElement(); // cell.setText((element == null) ? "" : element.toString()); // cell.setImage(getImage(element)); // cell.setFont(JFaceResources.getFont(JFaceResources.BANNER_FONT)); // cell.setForeground(cell.getControl().getDisplay().getSystemColor( // SWT.COLOR_BLUE)); // cell.setBackground(cell.getControl().getDisplay().getSystemColor( // SWT.COLOR_RED)); // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider#getImage(java.lang.Object) // */ // public Image getImage(Object element) { // // create a resource manager that holds onto images // // OR create image set, dispose in teardown // // return fViewer.getControl().getDisplay().getSystemImage( // SWT.ICON_WARNING); // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider#getStyledText(java.lang.Object) // */ // public StyledString getStyledText(Object element) { // return new StyledString(element.toString(), // StyledString.COUNTER_STYLER); // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.viewers.IFontProvider#getFont(java.lang.Object) // */ // public Font getFont(Object element) { // return JFaceResources.getFont(JFaceResources.BANNER_FONT); // } // // } // // private class TestLabelDecorator implements ILabelDecorator, // IColorDecorator { // // public Image decorateImage(Image image, Object element) { // return image; // } // // public String decorateText(String text, Object element) { // return text; // } // // public void addListener(ILabelProviderListener listener) { // } // // public void dispose() { // } // // public boolean isLabelProperty(Object element, String property) { // return false; // } // // public void removeListener(ILabelProviderListener listener) { // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.viewers.IColorDecorator#decorateBackground(java.lang.Object) // */ // public Color decorateBackground(Object element) { // return fViewer.getControl().getDisplay().getSystemColor( // SWT.COLOR_RED); // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.viewers.IColorDecorator#decorateForeground(java.lang.Object) // */ // public Color decorateForeground(Object element) { // return fViewer.getControl().getDisplay().getSystemColor( // SWT.COLOR_BLUE); // } // } // // private CountryEntry[] entries; // protected String changeMe = "OLD"; // private static int COLUMN_COUNT = 3; // // public DecoratingStyledCellLabelProviderTest(String name) { // super(name); // entries = new CountryEntry[3]; // entries[0] = new AustriaEntry(); // entries[1] = new GermanyEntry(); // entries[2] = new EnglandEntry(); // } // // protected StructuredViewer createViewer(Composite parent) { // TableViewer viewer = new TableViewer(parent, SWT.FULL_SELECTION); // // viewer.setContentProvider(new IStructuredContentProvider() { // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.viewers.IContentProvider#dispose() // */ // public void dispose() { // }; // // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) // */ // public Object[] getElements(Object inputElement) { // return entries; // }; // // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, // * java.lang.Object, java.lang.Object) // */ // public void inputChanged(org.eclipse.jface.viewers.Viewer viewer, // Object oldInput, Object newInput) { // } // // }); // createColumns(viewer); // viewer.setLabelProvider(createLabelProvider()); // // GridData data = new GridData(GridData.GRAB_HORIZONTAL // | GridData.GRAB_VERTICAL | GridData.FILL_BOTH); // // viewer.getControl().setLayoutData(data); // viewer.setSelection(new StructuredSelection(entries[1])); // // return viewer; // } // // /** // * @return {@link DecoratingStyledCellLabelProvider} // */ // private DecoratingStyledCellLabelProvider createLabelProvider() { // return new DecoratingStyledCellLabelProvider( // new TestCellLabelProvider(), getDecorator(), getContext()); // } // // /** // * @return // */ // private IDecorationContext getContext() { // return new IDecorationContext() { // // public String[] getProperties() { // return null; // } // // public Object getProperty(String property) { // return null; // } // }; // } // // /** // * @return // */ // private ILabelDecorator getDecorator() { // return new TestLabelDecorator(); // } // // private ILabelProviderListener getListener() { // return new ILabelProviderListener() { // // public void labelProviderChanged(LabelProviderChangedEvent event) { // changeMe = "been changed"; // } // }; // } // // /** // * Create the columns to be used in the tree. // */ // private void createColumns(TableViewer viewer) { // TableLayout layout = new TableLayout(); // Table table = viewer.getTable(); // table.setLayout(layout); // table.setHeaderVisible(true); // table.setLinesVisible(true); // // for (int i = 0; i < COLUMN_COUNT; i++) { // TableColumn tc = new TableColumn(table, SWT.NONE, i); // layout.addColumnData(new ColumnPixelData(100)); // tc.setText(getTitleFor(i)); // } // } // // protected void setInput() { // fViewer.setInput(this); // } // // // the tests // public void testGetDecorationContext() { // assertNotNull(getDecoratingStyledLabelProvider().getDecorationContext()); // } // // public void testSetDecorationContext() { // try { // getDecoratingStyledLabelProvider().setDecorationContext(null); // fail("DecoratingStyledCellLabelProvider.setDecorationContext did not throw an exception when passed null"); // } catch (AssertionFailedException e) { // // A Good Thing. // } // } // // public void testUpdate() { // Table table = ((TableViewer) fViewer).getTable(); // String before = table.getItem(0).toString(); // entries[0].name = "Updated"; // fViewer.refresh(); // assertNotSame(before, table.getItem(0).toString()); // } // // public void testGetForeground() { // // TODO: Incomplete test // // fViewer.getControl().getShell().setFocus(); // // // // long stopTime = System.currentTimeMillis() + 1000; // // while (stopTime < System.currentTimeMillis()) { // // Display.getCurrent().readAndDispatch(); // // } // // // // Table table = ((TableViewer) fViewer).getTable(); // // // // TableItem ti = table.getItem(0); // // // // Color widget = ti.getForeground(); // // assertEquals(widget, // // getDecoratingStyledLabelProvider().getForeground( // // ti)); // } // // public void testGetBackground() { // // TODO: Incomplete test // // // Table table = ((TableViewer) fViewer).getTable(); // // TableItem ti = table.getItem(0); // // Color d = ((DecoratingStyledCellLabelProvider) ((TableViewer) // // fViewer) // // .getLabelProvider(0)).getBackground(ti); // // assertEquals(d, // // getDecoratingStyledLabelProvider().getBackground(ti)); // } // // public void testGetFont() { // // TODO: Incomplete test // // // Table table = ((TableViewer) fViewer).getTable(); // // TableItem ti = table.getItem(0); // // // assertEquals(f, getDecoratingStyledLabelProvider().getFont(ti)); // } // // public void testGetImage() { // Table table = ((TableViewer) fViewer).getTable(); // // assertEquals(table.getItem(0).getImage(), // getDecoratingStyledLabelProvider().getImage(table.getItem(0))); // // } // // public void testGetLabelDecorator() { // assertNotNull(getDecoratingStyledLabelProvider().getLabelDecorator()); // // getDecoratingStyledLabelProvider().setLabelDecorator(null); // assertNull(getDecoratingStyledLabelProvider().getLabelDecorator()); // } // // public void testSetLabelDecorator() { // ILabelDecorator labelDecorator = getDecorator(); // getDecoratingStyledLabelProvider().setLabelDecorator(labelDecorator); // assertEquals(labelDecorator, getDecoratingStyledLabelProvider() // .getLabelDecorator()); // // } // // public void testAddListener() { // String old = changeMe; // String will change because the listener will // // be listening for it // ILabelProviderListener listener = getListener(); // getDecoratingStyledLabelProvider().addListener(listener); // getDecoratingStyledLabelProvider().setLabelDecorator(getDecorator()); // assertNotSame(old, changeMe); // } // // public void testRemoveListener() { // String old = changeMe = "OLD"; // ILabelProviderListener listener = getListener(); // getDecoratingStyledLabelProvider().addListener(listener); // getDecoratingStyledLabelProvider().removeListener(listener); // getDecoratingStyledLabelProvider().setLabelDecorator(getDecorator()); // assertEquals(old, changeMe); // } // // public void testIsLabelProperty() { // boolean check = getDecoratingStyledLabelProvider().isLabelProperty( // "element", "property"); // assertTrue(check); // } // // public void testDispose() { // fShell.dispose(); // assertFalse(fViewer.getLabelProvider() instanceof DecoratingStyledCellLabelProvider); // // the viewer will return a new LabelProvider if the current is null // } // // /** // * @return Returns the {@link DecoratingStyledCellLabelProvider} used for // * this test // */ // private DecoratingStyledCellLabelProvider getDecoratingStyledLabelProvider() { // return ((DecoratingStyledCellLabelProvider) fViewer.getLabelProvider()); // } // // class CountryEntry { // // String name; // // String cupYear; // // private String baseName; // // /** // * Create a new instance of the receiver. // * // * @param countryName // * @param worldCupYear // */ // CountryEntry(String countryName, String englishName, String worldCupYear) { // name = countryName; // cupYear = worldCupYear; // baseName = englishName; // } // // public String toString() { // return name + " " + cupYear + " " + baseName; // } // // /** // * @param index // * @return // */ // public int getHeight(Event event) { // switch (event.index) { // case 0: // return event.gc.textExtent(name).y; // case 1: // return 50; // case 2: // return event.gc.textExtent(cupYear).y; // default: // return 10; // } // } // // /** // * @param index // * @return // */ // public int getWidth(Event event) { // // switch (event.index) { // case 0: // return event.gc.textExtent(getDisplayString().toString()).x + 4; // // case 1: // return 200; // // case 2: // return event.gc.textExtent(cupYear).x + 5; // // default: // return 10; // } // } // // /** // * Draw the flag in bounds. // * // * @param event // */ // protected void drawFlag(Event event) { // event.gc.setBackground(fViewer.getControl().getDisplay() // .getSystemColor(SWT.COLOR_BLUE)); // // Rectangle bounds = event.getBounds(); // bounds.width += 100; // event.gc.fillRectangle(bounds); // } // // /** // * Draw the cup year // * // * @param event // */ // private void drawCupYear(Event event) { // event.gc.drawText(cupYear, event.x, event.y); // // } // // /** // * Draw the name of the receiver. // * // * @param event // */ // protected void drawName(Event event) { // // StringBuffer buffer = getDisplayString(); // // Display display = fViewer.getControl().getDisplay(); // TextLayout layout = new TextLayout(display); // layout.setText(buffer.toString()); // // TextStyle plain = new TextStyle(JFaceResources // .getFont(JFaceResources.DEFAULT_FONT), display // .getSystemColor(SWT.COLOR_LIST_FOREGROUND), display // .getSystemColor(SWT.COLOR_LIST_BACKGROUND)); // // TextStyle italic = new TextStyle(JFaceResources.getFontRegistry() // .getItalic(JFaceResources.DEFAULT_FONT), display // .getSystemColor(SWT.COLOR_BLUE), display // .getSystemColor(SWT.COLOR_LIST_BACKGROUND)); // // layout.setStyle(plain, 0, name.length() - 1); // layout.setStyle(italic, name.length(), buffer.length() - 1); // // layout.draw(event.gc, event.x, event.y); // // layout.dispose(); // // } // // /** // * @return // */ // private StringBuffer getDisplayString() { // StringBuffer buffer = new StringBuffer(); // buffer.append(name); // buffer.append(" ("); // buffer.append(baseName); // buffer.append(")"); // return buffer; // } // // /** // * @param event // */ // public void draw(Event event) { // // switch (event.index) { // case 0: // drawName(event); // break; // case 1: // drawFlag(event); // break; // case 2: // drawCupYear(event); // break; // // default: // break; // } // // } // } // // private class GermanyEntry extends CountryEntry { // // GermanyEntry() { // super("Deutschland", "Germany", "1990"); // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.tests.viewers.OwnerDrawExample.CountryEntry#drawFlag(org.eclipse.swt.widgets.Event) // */ // protected void drawFlag(Event event) { // // Rectangle bounds = event.getBounds(); // bounds.width += 100; // int stripeHeight = bounds.height / 3; // Rectangle stripe = new Rectangle(bounds.x, bounds.y, bounds.width, // stripeHeight); // // event.gc.setBackground(fViewer.getControl().getDisplay() // .getSystemColor(SWT.COLOR_BLACK)); // event.gc.fillRectangle(stripe); // // stripe.y += stripeHeight; // // event.gc.setBackground(fViewer.getControl().getDisplay() // .getSystemColor(SWT.COLOR_YELLOW)); // event.gc.fillRectangle(stripe); // // stripe.y += stripeHeight; // // event.gc.setBackground(fViewer.getControl().getDisplay() // .getSystemColor(SWT.COLOR_RED)); // event.gc.fillRectangle(stripe); // // } // // } // // private class AustriaEntry extends CountryEntry { // // AustriaEntry() { // super("\u00D6sterreich", "Austria", "TBD"); // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.tests.viewers.OwnerDrawExample.CountryEntry#drawFlag(org.eclipse.swt.widgets.Event) // */ // protected void drawFlag(Event event) { // // Rectangle bounds = event.getBounds(); // bounds.width += 100; // int stripeHeight = bounds.height / 3; // Rectangle stripe = new Rectangle(bounds.x, bounds.y, bounds.width, // stripeHeight); // // event.gc.setBackground(fViewer.getControl().getDisplay() // .getSystemColor(SWT.COLOR_RED)); // event.gc.fillRectangle(stripe); // // stripe.y += stripeHeight; // // event.gc.setBackground(fViewer.getControl().getDisplay() // .getSystemColor(SWT.COLOR_WHITE)); // event.gc.fillRectangle(stripe); // // stripe.y += stripeHeight; // // event.gc.setBackground(fViewer.getControl().getDisplay() // .getSystemColor(SWT.COLOR_RED)); // event.gc.fillRectangle(stripe); // // } // } // // private class EnglandEntry extends CountryEntry { // EnglandEntry() { // super("Blighty", "England", "1966"); // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jface.tests.viewers.OwnerDrawExample.CountryEntry#drawFlag(org.eclipse.swt.widgets.Event) // */ // protected void drawFlag(Event event) { // // Rectangle bounds = event.getBounds(); // bounds.width += 100; // // event.gc.setBackground(fViewer.getControl().getDisplay() // .getSystemColor(SWT.COLOR_RED)); // event.gc.fillRectangle(new Rectangle(bounds.width / 2 + bounds.x // - 5, bounds.y, 10, bounds.height)); // event.gc.fillRectangle(new Rectangle(bounds.x, bounds.height / 2 // + bounds.y - 5, bounds.width, 10)); // // } // } // // /** // * @param i // * @return // */ // private String getTitleFor(int i) { // switch (i) { // case 0: // return "Name"; // case 1: // return "Flag"; // case 2: // return "World Cup Year"; // } // return "Unknown"; // } // //}